﻿#ifndef __LCD_EXT_H
#define __LCD_EXT_H

#include "common.h"

/*****************************************************************************
* @brief   extern var
*****************************************************************************/
extern const unsigned char ascii_1206[][12];
extern const unsigned char ascii_1608[][16];
extern const unsigned char ascii_2412[][48];
extern const unsigned char ascii_3216[][64];

/*****************************************************************************
* @brief   function base
*****************************************************************************/
void lcd_init(void);
void lcd_fill(u16 xsta, u16 ysta, u16 xend, u16 yend, u16 color);	//指定区域填充颜色
void lcd_draw_point(u16 x, u16 y, u16 color);						//在指定位置画一个点
void lcd_draw_line(u16 x1, u16 y1, u16 x2, u16 y2, u16 color);		//在指定位置画一条线
void lcd_draw_rectangle(u16 x1, u16 y1, u16 x2, u16 y2, u16 color); //在指定位置画一个矩形
void lcd_draw_cricle(u16 x0, u16 y0, u8 r, u16 color);				//在指定位置画一个圆

void lcd_show_char(u16 x, u16 y, u8 num, u8 sizey, u8 mode);				//显示一个字符
void lcd_show_string(u16 x, u16 y, const u8 *p, u8 sizey, u8 mode);			//显示字符串
void lcd_show_picture(u16 x, u16 y, u16 length, u16 width, const u8 pic[]); //显示图片

/*****************************************************************************
* @brief   function ext
*****************************************************************************/
void lcd_font_en_set(const unsigned char *en);				   // 设置字库位置
void lcd_font_cn_set(void *(*font_cn_get)(uu32, uu32));		   // 获取汉字字字模的缓存要能存放最大尺寸字符
void lcd_img_font_set(void *(*img_num_get)(char, uu32, uu32)); //图片字库位置
void lcd_font_size_set(uu16 x, uu16 y);						   // 设置文字尺寸
void lcd_font_color_set(uu16 f_color, uu16 b_color);		   //设置文字颜色
void lcd_ext_buff_size(uu16 size);							   // 外部缓存，必须大于一行图像容量

void lcd_half_dot_en(void);			 // 文字小数点半角开启
void lcd_half_dot_dis(void);		 // 文字小数点半角关闭
void lcd_anti_color_en(void);		 // 文字反色开启
void lcd_anti_color_dis(void);		 // 文字反色关闭
void lcd_font_space_set(char space); // 设置字符间隔
void lcd_font_bk_color_en(uu8 st);	 // 禁用背景色显示文本时，需要软件刷背景图片

void lcd_insert_space(u16 x, u16 y, u16 wide); // 插入文字空格

/*****************************************************************************
* @brief   显示字符
*****************************************************************************/
void lcd_puts(uu16 x0, uu16 y0, const uu8 *chs);   // 显示字串,仅支持GBK编码
void lcd_put_img_nums(uu16 x0, uu16 y0, char *ns); // 显示图片数字

/*****************************************************************************
* @brief   显示图片
*****************************************************************************/
void lcd_show_format_pic(uu16 x0, uu16 y0, const u16 *img);
void lcd_show_cut_pic(			   //截取图片显示
	uu16 x0, uu16 y0,			   //显示位置
	uu16 cut_x0, uu16 cut_y0,	   //截取图片起始位置
	uu16 cut_wide, uu16 cut_hight, //截图宽度
	const u16 *img);			   //图片源，格式化图片

/*****************************************************************************
* @brief   显示外部存储图片
*****************************************************************************/
void lcd_show_ext_pic(uu16 x0, uu16 y0, void *(*img_get)(uu32 f_offset, uu32 rd_len));
void lcd_show_cut_ext_pic(
	uu16 x0, uu16 y0,
	uu16 cut_x0, uu16 cut_y0,
	uu16 cut_wide, uu16 cut_hight,
	void *(*img_get)(uu32 f_offset, uu32 rd_len));

/*****************************************************************************
* @brief   画笔颜色
*****************************************************************************/
#define WHITE 0xFFFF
#define BLACK 0x0000
#define BLUE 0x001F
#define BRED 0XF81F
#define GRED 0XFFE0
#define GBLUE 0X07FF
#define RED 0xF800
#define MAGENTA 0xF81F
#define GREEN 0x07E0
#define CYAN 0x7FFF
#define YELLOW 0xFFE0
#define BROWN 0XBC40	  //棕色
#define BRRED 0XFC07	  //棕红色
#define GRAY 0X8430		  //灰色
#define DARKBLUE 0X01CF	  //深蓝色
#define LIGHTBLUE 0X7D7C  //浅蓝色
#define GRAYBLUE 0X5458	  //灰蓝色
#define LIGHTGREEN 0X841F //浅绿色
#define LGRAY 0XC618	  //浅灰色(PANNEL),窗体背景色
#define LGRAYBLUE 0XA651  //浅灰蓝色(中间层颜色)
#define LBBLUE 0X2B12	  //浅棕蓝色(选择条目的反色)

#define COLOR_GEN(x) ((uu16)((x>>11)|(x&0x07E0)|(x<<11)))

/*****************************************************************************
* @brief   END
*****************************************************************************/
#endif
